<?xml version="1.0" encoding="UTF-8"?>
<doc>
<title>地图的制作与使用</title>

<para>
<ptitle>ClickableMap是什么东东？</ptitle>
　ClickableMap、按照字面意思上说，就是可以「点」的「地图」、通过在一张图片上定义数个「领域」、使玩家可以通过在图片上进行鼠标点击和选择的东西。<r/>
<r/>
　吉里吉里/KAG中制作地图，除了需要地图画面本身以外，还需要「<kw>领域图片（领域画像）</kw>」和「<kw>领域动作定义档</kw>」这两样，以上三个文件构成完整的地图。<r/>

</para>

<para>
<ptitle>领域图片又是什么？</ptitle>
　领域图片是一张和地图画面同样大小，位元数设定成256色的图片。256色以上位元的的图片是不行的。JPEG 无法作为领域图片， 请使用 PNG 或 BMP 等可保存为256色的图片格式。<r/>
<r/>
　领域图片上不同颜色的地方，和本体图片上的可点区域是一一对应的，请把你想划分的各区域使用<kw>调色盘索引色（Pallet index）</kw>区分开来。例如说、<r/>

<descimg>
<dititle>地图画面(如左图)和领域图片(如右图)</dititle>
<img src="map1.png"/><img src="map1_p.png"/>
</descimg>
　像以上两张图这样的东西。左边显示的图片是地图画面的范例，这里使用的是关东一带的地图。右边则是在对应的各地区涂上不同颜色的「领域图片」。<r/>
　领域图片就是这样，在各领域随意 (根据图片不同，索引色是不一样的) 填充了调色盘索引色的东西。以上领域图片中，各领域上写的小数字是这些颜色在这张图片上的索引色编号。 ( 只为方便说明而写上，实际制作地图的时候没必要写编号 )。使用索引色0号 ( 地图里是海洋的地方 ) 填充的区域是不可用的。<r/>
<r/>
　（译注：一张图片上的各颜色对应编号可以使用专门的软件查看。KCDDP已经提供了这样的工具。官方说明书这里是关于索引色原理之类的说明，没有翻译。）<r/>
<r/>
　领域图片，使用对应的地图画面图片名 ( 主文件名，不含扩展名 ) 后面加上 _p 来命名。例如说、地图画面原图名为 map.png 的情况，领域图片就应命名为 ( 存为PNG格式的话 ) map_p.png 。<r/>
</para>

<para>
<ptitle>领域动作定义档相关</ptitle>
　领域动作定义档、就是用来定义当玩家对地图各领域进行操作时，所执行的动作。<r/>
　扩展名是 .ma 、一般与地图画面原图同名。例如说、地图画面原图名为 map.png 的情况、领域动作定义档就应命名为 map.ma 。<r/>
<r/>
　领域动作定义档同样也是文本文件，可以使用文本编辑器进行编辑。<r/>
<r/>
　领域动作定义档中、一行的书写格式如「领域编号 ： 玩家操作后执行的内容」，行数与领域数应当是一一对应的 ( 冒号为半角 )。<r/>
　仍然以之前的地图为例子、<r/>
<bq>
11: hint="埼玉"; storage="maptest2.ks"; target="*m11";<r/>
8: hint="群馬"; storage="maptest2.ks"; target="*m8";<r/>
7: hint="栃木"; storage="maptest2.ks"; target="*m7";<r/>
9: hint="茨城"; storage="maptest2.ks"; target="*m9";<r/>
10: hint="千葉"; storage="maptest2.ks"; target="*m10";<r/>
12: hint="東京"; storage="maptest2.ks"; target="*m12";<r/>
2: hint="神奈川"; storage="maptest2.ks"; target="*m2";<r/>
3: hint="山梨"; storage="maptest2.ks"; target="*m3";<r/>
1: hint="静岡"; storage="maptest2.ks"; target="*m1";<r/>
4: hint="長野"; storage="maptest2.ks"; target="*m4";<r/>
5: hint="新潟"; storage="maptest2.ks"; target="*m5";<r/>
6: hint="福島"; storage="maptest2.ks"; target="*m6";<r/>
</bq>
　在定义档里这么写的话。领域编号和上面领域图片的索引色是一一对应的。<r/>
　「<kw>动作</kw>」 ( 冒号以后的部分 ) 虽然并不是 KAG 的语法，而是 TJS 的格式，但并不是很难的东西。<r/>
　「属性名=値;」只是需要按照这样的形式书写而已。请不要忘记使用分号把属性分开就可以了。<r/>
<r/>
　可以使用的属性名有以下几个。<r/>
<dl>
<dt>storage, target, onenter, onleave, hint, exp, countpage </dt>
<dd>
	　这里提供的功能和 link 指令是完全一样的，但请把属性的值使用 " " ( 半角双引号) 括起来 ( 就像范例里所写的那样 )。不使用 " " 的话，将无法正常执行。
</dd>
<dt>cursor</dt>
<dd>
	　当鼠标移动到地图领域上时，可以设定显示不同的游标样式。和使用 cursor 指令指定游标的方法相似、使用以 cr 开头的系统游标样式的情况，不需要加 &amp; 直接写名称即可 ( 例如  cursor = crSizeAll; )。使用游标文件（ani，cur之类）的情况下，使用 " " (半角双引号) 将文件名括起来 ( 例如 cursor = "wagtail.ani"; )。
</dd>
</dl>
<r/>
　领域动作定义档中、归属领域编号 0 的这行、是用来指定特别属性的。现在的版本，可以使用的有 autodisable 属性。例如、
<bq>
0 : autodisable=false;
</bq>
　像这样写的话，即使已经点击过地图，地图也不会变为无效 ( 无法操作 )状态 。一般情况下，不做这样的指定也 OK 。<r/>
　假如不这么做，也就是说不在编号 0 这行进行设定、在点击了地图之后、再次使用 <kw>image</kw> 指令重载图片或 <kw>mapaction</kw> 指令重新定义领域之前，地图将会变为无效 ( 无法点第二次 ) 状态。<r/>
<r/>
<note>
　假如有某个领域没有在动作定义档中定义、该领域将被无视。例如、想要根据条件让某几个领域不可用的情况，可以使用 TJS 形式的 if 判断、<r/>
11: if(f.flag == 1) { hint="埼玉"; storage="maptest2.ks"; target="*m11"; }<r/>
　像这样写的话就可以了。这么写的话、当 f.flag 为 1 时、「hint="埼玉"; storage="maptest2.ks"; target="*m11";」这个领域才会被定义。
</note>
</para>


<para>
<ptitle>地图的使用范例</ptitle>
　那么试着做张完整的地图吧。<r/>
　如之前的例子、地图画面原图命名为 map1.png、领域图片名为 map1_p.png、领域动作定义档则名为 map1.ma 。<r/>
　使用 image 指令，读入地图画面原图的时候，将自动搜索 该图片名_p 的文件，与及同名的，扩展名为 ma 的文件、然后一起读入。<r/>
　所以呢，一般情况下，想要使用地图时，只要用 image 指令读入地图画面原图就可以了。<r/>
<note>
	　假如想使用不同的领域图片或特殊动作定义档，还可以用 <kw>mapimage</kw> 指令和 mapaction 指令来定义地图。
</note>
　例如说、在 maptest.ks 剧本档里，写入如下代码。（译注：实际测试的时候，记得在first.ks里使用jump指令跳跃到maptest.ks哟）<r/>
<bq>
*start<r/>
@image layer=0 page=fore visible=true storage=map1<r/>
@position left=400 width=220<r/>
@wt<r/>
地图的测试。<r/>
@s<r/>
</bq>
　如果只写这些的话、执行到这里的时候，将等待玩家点击。<r/>
<r/>
<descimg>
<dititle>点选之后的效果</dititle>
<img src="clickable.png"/>
</descimg>
<r/>
　点选了地图上某领域之后，将会跳跃到什么地方，执行什么操作等等，当然是必须要写的。例如说、在另外一个剧本档 maptest2.ks 中，写入以下内容。<r/>
<bq>
*m11<r/>
@cm<r/>
这里是埼玉。[l]<r/>
@jump storage="maptest.ks" target="*start"<r/>
<r/>
*m8<r/>
@cm<r/>
这里是群馬。[l]<r/>
@jump storage="maptest.ks" target="*start"<r/>
<r/>
*m7<r/>
@cm<r/>
这里是栃木。[l]<r/>
@jump storage="maptest.ks" target="*start"<r/>
<r/>
*m9<r/>
@cm<r/>
这里是茨城。[l]<r/>
@jump storage="maptest.ks" target="*start"<r/>
<r/>
*m10<r/>
@cm<r/>
这里是千葉。[l]<r/>
@jump storage="maptest.ks" target="*start"<r/>
<r/>
*m12<r/>
@cm<r/>
这里是東京。[l]<r/>
@jump storage="maptest.ks" target="*start"<r/>
<r/>
*m2<r/>
@cm<r/>
这里是神奈川。[l]<r/>
@jump storage="maptest.ks" target="*start"<r/>
<r/>
*m3<r/>
@cm<r/>
这里是山梨。[l]<r/>
@jump storage="maptest.ks" target="*start"<r/>
<r/>
*m1<r/>
@cm<r/>
这里是静岡。[l]<r/>
@jump storage="maptest.ks" target="*start"<r/>
<r/>
*m4<r/>
@cm<r/>
这里是長野。[l]<r/>
@jump storage="maptest.ks" target="*start"<r/>
<r/>
*m5<r/>
@cm<r/>
这里是新潟。[l]<r/>
@jump storage="maptest.ks" target="*start"<r/>
<r/>
*m6<r/>
@cm<r/>
这里是福島。[l]<r/>
@jump storage="maptest.ks" target="*start"<r/>
</bq>
<r/>
<note>
　(无论是否显示，无论显示于表层或里层) 只要 KAG 内读入了有地图设定的图片、键盘的输入会自动切换成"使用键盘来移动光标"的模式。这样的话，像 edit 指令一类的，牵涉到键盘使用的其他功能将无法正常使用。<r/>
　当点击地图，使其自动无效化、使用 mapdisable 指令让地图无效化、或为了在地图所显示的层读入其他的图片，使用 freeimage 指令把地图从内存中释放掉的情况，将返回平时状况的键盘操作模式。
</note>
</para>

</doc>
